package net.suplementos.web.action;

import net.suplementos.negocio.CadastroDelegate;
import net.suplementos.pojo.Perfil;
import net.suplementos.pojo.Usuario;
import net.suplementos.servico.CadastroServico;
import net.suplementos.web.LocalConstantes;

import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.InterceptorRef;
import org.apache.struts2.convention.annotation.InterceptorRefs;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.Result;

import com.opensymphony.xwork2.ActionSupport;

@Namespace("/associarUsuarioPerfil")
@InterceptorRefs({
	@InterceptorRef(value = "store", params = {"operationMode", "AUTOMATIC"}),
	@InterceptorRef("defaultStack")
})
public class AssociarUsuarioPerfilAction extends ActionSupport {
	
	private Perfil perfil;
	private Usuario usuario;

	private CadastroServico cadastroServico = CadastroDelegate.getInstance();

	@Action(value = "abrirAssociarDesassociar", results = {
		@Result(name = SUCCESS, location = LocalConstantes.LOCAL_JSP_CADASTRO_ASSOCIAR_USUARIO_PERFIL + "/associar.jsp") 
	})
    public String abrirAssociarDesassociar() throws Exception {
		cadastroServico.listarTodosPerfisUsuario(getUsuario());
        return SUCCESS;
    }

	@Action(value = "associar", results = {
		@Result(name = SUCCESS, params = {"actionName", "abrirAssociarDesassociar"}, type = "redirectAction") 
	})
	public String associar() throws Exception {
		addActionMessage(getText("associar.usuario.mensagem.sucesso"));
		cadastroServico.associarUsuarioPerfil(getUsuario(), getPerfil(), getUsuario());
		return SUCCESS;
	}

	@Action(value = "desassociar", results = {
		@Result(name = SUCCESS, params = {"actionName", "abrirAssociarDesassociar"}, type = "redirectAction") 
	})
	public String desassociar() throws Exception {
		addActionMessage(getText("desassociar.usuario.mensagem.sucesso"));
		cadastroServico.desassociarUsuarioPerfil(new Usuario(), new Perfil(), new Usuario());
		return SUCCESS;
	}

	public Perfil getPerfil() {
		return perfil;
	}

	public void setPerfil(Perfil perfil) {
		this.perfil = perfil;
	}

	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

}
